﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//#include<stdlib.h>
//#include<string.h>
////错误版本
//void reve(char* str)
//{
//    int len = strlen(str);
//    char t = *str;
//    *str = *(str + len - 1);
//    *(str + len - 1) = '\0';
//    //在这里应该注意长度，必须重新算
//    if (len >= 2)
//    {
//        reve(str + 1);
//    }
//    *(str + len - 1) = t;
//}
//int main()
//{
//    char arr[100] = { '\0' };
//    gets(arr);
//    reve(arr);
//    printf("%s", arr);
//    return 0;
//}
//喝汽水
//#include<stdio.h>
//int main()
//{
//	//一瓶汽水的价格
//	int water = 1;
//	//总共的钱
//	int n = 20;
//	//总共可以买的汽水
//	int t = n * water;
//	//假设全部喝完，所有的瓶子出2就是又可以换的汽水
//	int c = t / 2;
//	//可以买的所有汽水
//	int add = c + t;
//	printf("%d", add);
//	return 0;
//}
//#include<stdio.h>
//void reve(char* str)
//{
//	if (*str != '\0')
//	{
//		reve(str + 1);
//		printf("%c", *str);
//	}
//	else
//		printf("%c", *str);
//}
//int main()
//{
//	char arr[100] = { '\0' };
//	gets(arr);
//	reve(arr);
//	return 0;
//}
//#include<stdio.h>
//#include<string.h>
//void reve(char* str)
//{
//	int len = strlen(str);
//	char t = *str;
//	*str = *(str + len - 1);
//	*(str + len - 1) = '\0';
//	if (strlen(str+1) >= 2)
//	{
//		reve(str + 1);
//	}
//	*(str + len - 1) = t;
//}
//int main()
//{
//	char arr[100] = { '\0' };
//	gets(arr);
//	reve(arr);
//	puts(arr);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	char arr[10000] = { '\0' };
//	gets(arr);
//	int left = 0;
//	int right = strlen(arr) - 1;
//	while (left < right)
//	{
//		char t = arr[left];
//		arr[left] = arr[right];
//		arr[right] = t;
//		left++;
//		right--;
//	}
//	puts(arr);
//	return 0;
//}
//递归算法的练习
//一个人赶着鸭子去每个村庄卖，每经过一个村子卖出去所赶鸭子的一半又一只，就这样，
//他经过了7个村子还剩2个鸭子，问他出发时总共有多少只鸭子，经过每个村庄卖出去多少只鸭子
#include<stdio.h>
//int func(int n)
//{
//	if (n == 8)
//	{
//		return 2;
//	}
//	return (func(n + 1) + 1) * 2;
//}
//int main()
//{
//	int count = 1;
//	int ret=func(1);
//	printf("%d", ret);
//	return 0;
//}
//角谷定理
//输入一个数，若这个数是偶数，则这个数除2，若这个数是奇数，则让他乘3加1，经过有限此后，
//总可以得到自然数1，问，要经过多少次才可以得到自然数1.
//int count(int n)
//{
//	if (n == 1)
//	{
//		return 1;
//	}
//	else
//	{
//		if (n % 2 == 0)
//		{
//			n = n / 2;
//		}
//		else
//		{
//			n = n * 3 + 1;
//		}
//		return 1 + count(n);
//	}
//	
//
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret=count(n);
//	printf("%d", ret);
//	return 0;
//}
////牛牛最近学会了一些简单的数学运算，例如 
//∑
//�
//=
//1
//�
//
//∑
//i = 1
//n
//​
//请你帮他模拟一下这个运算。 （即 1 + 2 + 3.... + n - 1 + n)
#include <stdio.h>
//int add(int n)
//{
//    if (n == 1)
//    {
//        return 1;
//    }
//    else
//    {
//        return n + add(n - 1);
//    }
//}
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int ret = add(n);
//    printf("%d", ret);
//    return 0;
//}
//int main()
//{
//	int max = 0;
//	int min = 100;
//	int n = 0;
//	//有n个成绩
//	scanf("%d", &n);
//	int i = 0;
//	int j = 0;
//	for (i = 0; i < n; i++)
//	{
//		//j代表是每次输入的成绩
//		scanf("%d", &j);
//		//每次输入完跟最大值与最小值比较，并且完成交换
//		if (max < j)
//		{
//			max = j;
//		}
//		if (min > j)
//		{
//			min = j;
//		}
//	}
//	//输出最大值跟最小值
//	printf("%d", max - min);
//	return 0;
//}
//#include <stdio.h>
//int Ackmann(int n, int m)
//{
//    if (m == 0)
//    {
//        return n + 1;
//    }
//    else if (m > 0 && n == 0)
//    {
//        return Ackmann(m, 1);
//    }
//    else
//    {
//        return Ackmann(m - 1, Ackmann(m, n - 1));
//    }
//}
//int main()
//{
//    int n = 0;
//    int m = 0;
//    scanf("%d%d", &n, &m);
//    int ret = Ackmann(n, m);
//    printf("%d", ret);
//    return 0;
////}
//int ret(int n)
//{
//	if (n == 1)
//	{
//		return 1;
//	}
//	else
//	{
//		return n * ret(n - 1);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	printf("%d",ret(n));
//	return 0;
////}
//#include <stdio.h>
//void print(int n)
//{
//    if (n > 9)
//    {
//        printf("%d", n % 10);
//        print(n / 10);
//    }
//    else
//    {
//        printf("%d", n);
//    }
//}
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    print(n);
//    return 0;
////}
//void print(int n)
//{
//	if (n < 10)
//	{
//		printf("%d ", n);
//	}
//	else
//	{
//		print(n / 10);
//		printf("%d ", n % 10);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	print(n);
//	return 0;
//}
//有一头母牛，它每年年初生一头小母牛。每头小母牛从第四个年头开始，每年年初也生一头小母牛。请编程实现在第n年的时候，共有多少头母牛？
//1 2 3 4 6 8 10 12
//int cow(int n)
//{
//	if (n <= 4)
//	{
//		return n;
//	}
//	else
//	{
//		return 2+cow(n-1);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret=cow(n);
//	printf("%d", ret);
//	return 0;
//}
//#include<stdio.h>
//int cow(int n)
//{
//    if (n <= 4)
//    {
//        return n;
//    }
//    else
//    {
//        return 2 + cow(n - 1);
//    }
//}
//int main()
//{
//    int n = 0;
//    while (scanf("%d", &n) != EOF)
//    {
//        int ret = cow(n);
//        printf("%d\n", ret);
//    }
//    return 0;
//}
//递归算最大公约数
//void mul(int n, int m,int min)
//{
//	
//	if (n % min == 0 && m % min == 0)
//	{
//		printf("%d", min);
//	}
//	else
//	{
//		mul(n, m, min - 1);
//	}
//}
//int main()
//{
//	int n = 0;
//	int m = 0;
//	scanf("%d%d", &n, &m);
//	int min = n < m ? n : m;
//	mul(n, m, min);
//	return 0;
//}
// //递归法不用四则混合运算算加法
//void add(int n, int m)
//{
//	int c = n ^ m;
//	m = (m & n) << 1;
//	if (m == 0)
//	{
//		printf("%d", c);
//	}
//	else
//	{
//		add(c, m);
//	}
//}
//int main()
//{
//	int n = 0;
//	int m = 0;
//	scanf("%d%d", &n, &m);
//	add(n, m);
//	return 0;
//}
//逆序打印整数
//void print(int n)
//{
//	if (n < 10)
//	{
//		printf("%d", n);
//	}
//	else
//	{
//		printf("%d", n % 10);
//		print(n / 10);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	print(n);
//	return 0;
//}
//猴子吃桃问题。猴子第一天摘下若干个桃子，当即吃了一半，还不过瘾，又多吃了一个。 第二天早上又将剩下的桃子吃掉一半，又多吃一个。
//以后每天早上都吃了前一天剩下的一半零一个。
//到第N天早上想再吃时，见只剩下一个桃子了。求第一天共摘多少桃子。//n/2+1
//int  peach(int n)
//{
//	if(n==1)
//	{
//		return 1;
//	}
//	else
//	{
//		return 1 + peach(n / 2 + 1);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret=peach(n);
//	printf("%d", ret);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//    int arr[10] = { 0 };
//    int n = 0;
//    int i = 0;
//    for (i = 0; i < 9; i++)
//    {
//        scanf("%d", &arr[i]);
//    }
//    scanf("%d", &n);
//    int sz = sizeof(arr) - 1;
//    for (i = 0; i < 9; i++)
//    {
//        if (arr[i] <= n);
//        else
//        {
//            while (sz >= i)
//            {
//                arr[sz] = arr[sz - 1];
//                sz--;
//            }
//            arr[i] = n;
//        }
//    }
//    for (i = 0; i < 10; i++)
//    {
//        printf("%d\n", arr[i]);
//    }
//    return 0;
//}
//猴子吃桃问题。猴子第一天摘下N个桃子，当即吃了一半，还不过瘾，又多吃了一个。 第二天早上又将剩下的桃子吃掉一半，又多吃一个。
//以后每天早上都吃了前一天剩下的一半零一个。
////到第10天早上想再吃时，见只剩下一个桃子了。求第一天共摘多少桃子。// 
//#include<math.h>
//int peach(int n)
//{
//	if (n == 10)
//	{
//		return 1;
//	}
//	else
//	{
//		return (peach(n + 1) + 1) * 2;
//	}
//}
//int main()
//{
//	int ret=peach(1);
//	printf("%d", ret);
//	return 0;
//}
//}
//int  reve(char* str)
//{
//	if (*str != '\0')
//	{
//		return 1 + reve(str + 1);
//	}
//	else
//	{
//		return 0;
//	}
//}
//int main()
//{
//	char arr[] = "this";
//	printf("%d",reve(arr));
//	return 0;
//}
//int sum(int n)
//{
//	if (n < 10)
//	{
//		return n;
//	}
//	else
//	{
//		return n % 10 + sum(n / 10);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	printf("%d", sum(n));
//	return 0;
//}
//int age(int n)
//{
//	if (n == 1)
//	{
//		return 10;
//	}
//	else
//	{
//		return 2 + age(n - 1);
//	}
//}
//int main()
//{
//	int ret=age(5);
//	printf("%d", ret);
//	return 0;
//}